package com.ljx.ChaiFen;

/**
 * @author 李加喜
 * @Package com.ljx.ChaiFen
 * @date 2021-11-23 20:39
 */
public class Difference {
    /*    构建差分数组 */
    private int[] diff;

    /* 输⼊⼀个初始数组，区间操作将在这个数组上进⾏ */
    public Difference(int[] nums) {
        // 使用了断言只有数据存在的情况下才会像下面进行执行
        assert nums.length > 0;
        diff = new int[nums.length];
        // 根据初始数组构造差分数组
        diff[0] = nums[0];
        for (int i = 1; i < nums.length; i++) {
            diff[i] = nums[i] - nums[i - 1];
        }

    }
    public void increment(int i, int j, int val) {
        // 这里是+ 也可以是其他操作
        diff[i]+=val;
        if (j+1<diff.length){
            diff[j+1]-=val;
        }
    }
    /**
     * 返回结果数组
     */
    public int[] result() {
        int[] res=new int[diff.length];
        // 根据差分数组构造结果数组
        res[0]=diff[0];
        for (int i=1;i<diff.length;i++){
            res[i]=res[i-1]+diff[i];
        }
        return res;
    }

}
